From 12576244f5486438df3f5987c464811603b0aec9 Mon Sep 17 00:00:00 2001 From: "mjw@wray-m-3.hpl.hp.com" Date: Thu, 2 Sep 2004 09:34:07 +0000 Subject: [PATCH] bitkeeper revision 1.1159.1.113 (4136e90fOr8_LyqJ85kTqL-uFrO_xw) Remove debug prints and turn logging to stderr off by default. --- tools/python/xen/xend/XendDomain.py | 18 +--- tools/python/xen/xend/XendDomainInfo.py | 4 +- tools/python/xen/xend/XendLogging.py | 15 +++- tools/python/xen/xend/XendRoot.py | 96 ++++++++++++++++++++-- tools/python/xen/xend/server/SrvDaemon.py | 26 ++++-- tools/python/xen/xend/server/blkif.py | 3 - tools/python/xen/xend/server/controller.py | 2 +- tools/python/xen/xend/server/netif.py | 2 - 8 files changed, 126 insertions(+), 40 deletions(-) diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index c4180da8e5..8621bd2e41 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -228,10 +228,6 @@ class XendDomain: """ self.reap_cancel() domlist = xc.domain_getinfo() - #for d in domlist: - # print 'reap> xen: ', d['dom'], d - #for d in self.domain_by_id.values(): - # print 'reap> xend: ', d.id, d.info casualties = [] for d in domlist: dead = 0 @@ -272,10 +268,6 @@ class XendDomain: """ self.refresh_cancel() domlist = xc.domain_getinfo() - #for d in domlist: - # print 'refresh> xen: ', d['dom'], d - #for d in self.domain_by_id.values(): - # print 'refresh> xend: ', d.id, d.info # Index the domlist by id. # Add entries for any domains we don't know about. doms = {} @@ -394,12 +386,8 @@ class XendDomain: @param vmconfig: vm configuration @return: deferred """ - print 'domain_configure>', id, vmconfig config = sxp.child_value(vmconfig, 'config') dominfo = self.domain_lookup(id) - print 'domain_configure>', 'dominfo=', dominfo - for dinfo in self.domain_by_id.values(): - print 'domain', 'id=', dinfo.id, 'name=', dinfo.name log.debug('domain_configure> id=%s config=%s', str(id), str(config)) if dominfo.config: raise XendError("Domain already configured: " + dominfo.id) @@ -597,11 +585,9 @@ class XendDomain: """ # Need a cancel too? # Don't forget to cancel restart for it. - print 'domain_migrate>', id, dst dominfo = self.domain_lookup(id) xmigrate = XendMigrate.instance() val = xmigrate.migrate_begin(dominfo.id, dst, live=live) - print 'domain_migrate<', val return val def domain_save(self, id, dst, progress=0): @@ -616,10 +602,10 @@ class XendDomain: xmigrate = XendMigrate.instance() return xmigrate.save_begin(dominfo.id, dst) - def domain_pincpu(self, dom, cpu): + def domain_pincpu(self, id, cpu): """Pin a domain to a cpu. - @param dom: domain + @param id: domain @param cpu: cpu number """ dominfo = self.domain_lookup(id) diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index 673153dd66..88a9d5b5c3 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -16,7 +16,6 @@ import os import time from twisted.internet import defer -#defer.Deferred.debug = 1 import xen.lowlevel.xc; xc = xen.lowlevel.xc.new() import xen.util.ip @@ -188,7 +187,7 @@ def vif_up(iplist): def arping(ip, gw): cmd = '/usr/sbin/arping -A -b -I eth0 -c 1 -s %s %s' % (ip, gw) - print cmd + log.debug(cmd) os.system(cmd) gateway = xen.util.ip.get_current_ipgw() or '255.255.255.255' @@ -472,7 +471,6 @@ class XendDomainInfo: # my domain id. if not dominfo: return - #print 'check_name>', 'dom=', dominfo.name, dominfo.dom, 'self=', name, self.dom if dominfo.is_terminated(): return if not self.dom or (dominfo.dom != self.dom): diff --git a/tools/python/xen/xend/XendLogging.py b/tools/python/xen/xend/XendLogging.py index 9be84b834c..9fc7cbb1c6 100644 --- a/tools/python/xen/xend/XendLogging.py +++ b/tools/python/xen/xend/XendLogging.py @@ -18,6 +18,9 @@ class XendLogging: dateFormat = "%Y-%m-%d %H:%M:%S" def __init__(self, filename, level=logging.INFO, maxBytes=None, backupCount=None): + """Initialise logging. Logs to 'filename' by default, but does not log to + stderr unless addLogStderr() is called. + """ self.setLevel(level) if maxBytes: self.maxBytes = maxBytes @@ -25,7 +28,6 @@ class XendLogging: self.backupCount = backupCount self.initLogFile(filename) self.initLogStderr() - pass def setLevel(self, level): if isinstance(level, types.StringType): @@ -40,6 +42,8 @@ class XendLogging: return logging.getLogger("xend") def initLogFile(self, filename): + """Create the file logger and add it. + """ self.logfile = RotatingFileHandler(filename, mode='a', maxBytes=self.maxBytes, @@ -56,9 +60,18 @@ class XendLogging: return self.logfilename def initLogStderr(self): + """Create the stderr logger, but don't add it. + """ self.logstderr = StreamHandler() self.logstderr.setFormatter(Formatter(self.logStderrFormat, self.dateFormat)) + + def addLogStderr(self): + """Add logging to stderr.""" self.getLogger().addHandler(self.logstderr) + + def removeLogStderr(self): + """Remove logging to stderr.""" + self.getLogger().removeHandler(self.logstderr) def getLogStderr(self): return self.logstderr diff --git a/tools/python/xen/xend/XendRoot.py b/tools/python/xen/xend/XendRoot.py index 12e13a2756..d9c6c80012 100644 --- a/tools/python/xen/xend/XendRoot.py +++ b/tools/python/xen/xend/XendRoot.py @@ -58,6 +58,7 @@ class XendRoot: self.dbroot = None self.config_path = None self.config = None + self.logger = None self.configure() self.check_lastboot() eserver.subscribe('xend.*', self.event_handler) @@ -85,18 +86,75 @@ class XendRoot: def start(self): eserver.inject('xend.start', self.rebooted) + def _format(self, msg, args): + if args: + return str(msg) + else: + return str(msg) % args + + def _log(self, mode, fmt, args): + """Logging function that uses the logger if it exists, otherwise + logs to stderr. We use this for XendRoot log messages because + they may be logged before the logger has been configured. + Other components can safely use the logger. + """ + log = self.get_logger() + if mode not in ['warning', 'info', 'debug', 'error']: + mode = 'info' + level = mode.upper() + if log: + getattr(log, mode)(fmt, *args) + else: + print >>stderr, "xend", "[%s]" % level, self._format(msg, args) + + def logDebug(self, fmt, *args): + """Log a debug message. + + @param fmt: message format + @param args: arguments + """ + self._log('info', fmt, args) + + def logInfo(self, fmt, *args): + """Log an info message. + + @param fmt: message format + @param args: arguments + """ + self._log('info', fmt, args) + + def logWarning(self, fmt, *args): + """Log a warning message. + + @param fmt: message format + @param args: arguments + """ + self._log('warning', fmt, args) + + def logError(self, fmt, *args): + """Log an error message. + + @param fmt: message format + @param args: arguments + """ + self._log('error', fmt, args) + def event_handler(self, event, val): - print >> sys.stderr, "EVENT>", event, val + self.logInfo("EVENT> %s %s", str(event), str(val)) def read_lastboot(self): + """Read the lastboot file to determine the time of the last boot. + """ try: val = file(self.lastboot, 'rb').readlines()[0] except StandardError, ex: - print 'warning: Error reading', self.lastboot, ex + self.logWarning('Error reading %s: %s', self.lastboot, str(ex)) val = None return val def write_lastboot(self, val): + """Write the last boot time to the lastboot file. + """ if not val: return try: fdir = os.path.dirname(self.lastboot) @@ -106,8 +164,7 @@ class XendRoot: out.write(val) out.close() except IOError, ex: - print 'warning: Error writing', self.lastboot, ex - pass + self.logWarning('Error writing %s: %s', self.lastboot, str(ex)) def check_lastboot(self): """Check if there has been a system reboot since we saved lastboot. @@ -122,13 +179,17 @@ class XendRoot: self.last_reboot = this_val def get_last_reboot(self): + """Get the last reboot time as a string. + """ return self.last_reboot def get_rebooted(self): + """Get the rebooted flag. The flag is true if the system has + been rebooted since xend was last run. + """ return self.rebooted def configure(self): - print 'XendRoot>configure>' self.set_config() self.configure_logger() self.dbroot = self.get_config_value("dbroot", self.dbroot_default) @@ -140,9 +201,13 @@ class XendRoot: self.logging = XendLogging(logfile, level=loglevel) def get_logging(self): + """Get the XendLogging instance. + """ return self.logging def get_logger(self): + """Get the logger. + """ return self.logging.getLogger() def get_dbroot(self): @@ -156,9 +221,7 @@ class XendRoot: The config file is a sequence of sxp forms. """ self.config_path = os.getenv(self.config_var, self.config_default) - print 'XendRoot>set_config> config_path=', self.config_path if os.path.exists(self.config_path): - print 'XendRoot>set_config> loading' fin = file(self.config_path, 'rb') try: config = sxp.parse(fin) @@ -167,9 +230,7 @@ class XendRoot: finally: fin.close() else: - print 'XendRoot>set_config> not found' self.config = ['xend-config'] - print 'XendRoot> config=', self.config def get_config(self, name=None): """Get the configuration element with the given name, or @@ -213,6 +274,9 @@ class XendRoot: return v in ['yes', '1', 'on'] def instance(): + """Get an instance of XendRoot. + Use this instead of the constructor. + """ global inst try: inst @@ -221,10 +285,24 @@ def instance(): return inst def logger(): + """Get the logger. + """ return instance().get_logger() def add_component(name, val): + """Register a component with XendRoot. + This is used to work-round import cycles. + + @param name: component name + @param val: component value (often a module) + """ return instance().add_component(name, val) def get_component(name): + """Get a component. + This is used to work-round import cycles. + + @param name: component name + @return component or None + """ return instance().get_component(name) diff --git a/tools/python/xen/xend/server/SrvDaemon.py b/tools/python/xen/xend/server/SrvDaemon.py index 55aa6567aa..851b72198b 100644 --- a/tools/python/xen/xend/server/SrvDaemon.py +++ b/tools/python/xen/xend/server/SrvDaemon.py @@ -334,7 +334,7 @@ class EventProtocol(protocol.Protocol): self.events = events def queue_event(self, name, v): - # Despite the name we dont' queue the event here. + # Despite the name we don't queue the event here. # We send it because the transport will queue it. self.send_event([name, v]) @@ -397,11 +397,27 @@ class EventProtocol(protocol.Protocol): eserver.inject(sxp.name(event), event) return ['ok'] - def op_traceon(self, name, v): - self.daemon.tracing(1) + def op_trace(self, name, v): + mode = (v[1] == 'on') + self.daemon.tracing(mode) - def op_traceoff(self, name, v): - self.daemon.tracing(0) + def op_log_stderr(self, name, v): + mode = v[1] + logging = XendRoot.instance().get_logging() + if mode == 'on': + logging.addLogStderr() + else: + logging.removeLogStderr() + + def op_debug_msg(self, name, v): + mode = v[1] + import messages + messages.DEBUG = (mode == 'on') + + def op_debug_controller(self, name, v): + mode = v[1] + import controller + controller.DEBUG = (mode == 'on') class EventFactory(protocol.Factory): diff --git a/tools/python/xen/xend/server/blkif.py b/tools/python/xen/xend/server/blkif.py index d961008bf2..c3c3eb2de3 100755 --- a/tools/python/xen/xend/server/blkif.py +++ b/tools/python/xen/xend/server/blkif.py @@ -74,7 +74,6 @@ class BlkifBackendInterface(controller.BackendInterface): def respond_be_create(self, msg): val = unpackMsg('blkif_be_create_t', msg) - print 'respond_be_create>', val self.connected = 1 return self @@ -122,7 +121,6 @@ class BlkifBackendInterface(controller.BackendInterface): @type msg: xu message """ val = unpackMsg('blkif_be_connect_t', msg) - print 'respond_be_connect>', str(self), val self.send_fe_interface_status_changed() def send_fe_interface_status_changed(self, response=None): @@ -401,7 +399,6 @@ class BlkifController(controller.SplitController): def recv_fe_driver_status_changed(self, msg, req): val = unpackMsg('blkif_fe_driver_status_changed_t', msg) - print 'recv_fe_driver_status_changed>', val # For each backend? msg = packMsg('blkif_fe_interface_status_changed_t', { 'handle' : 0, diff --git a/tools/python/xen/xend/server/controller.py b/tools/python/xen/xend/server/controller.py index d2628e8779..d77f51c10c 100755 --- a/tools/python/xen/xend/server/controller.py +++ b/tools/python/xen/xend/server/controller.py @@ -9,7 +9,7 @@ from twisted.internet import defer import channel from messages import msgTypeName, printMsg -DEBUG = 1 +DEBUG = 0 class Responder: """Handler for a response to a message with a specified id. diff --git a/tools/python/xen/xend/server/netif.py b/tools/python/xen/xend/server/netif.py index 8b40db615e..3b4dc25339 100755 --- a/tools/python/xen/xend/server/netif.py +++ b/tools/python/xen/xend/server/netif.py @@ -191,7 +191,6 @@ class NetDev(controller.SplitDev): vnet.vifctl(op, self.get_vifname(), self.get_mac()) def attach(self): - print 'attach>' d = self.send_be_create() d.addCallback(self.respond_be_create) return d @@ -207,7 +206,6 @@ class NetDev(controller.SplitDev): def respond_be_create(self, msg): val = unpackMsg('netif_be_create_t', msg) - print 'respond_be_create>', val return self def destroy(self): -- 2.30.2